#include "shm.hpp"
#include <string>

int main() {
    // 步骤1：附着到共享内存（USER身份）
    Shm shm(pathname, projid, USER);
    ShmData *mem = (ShmData*)shm.VirtualAddr();

    // 步骤2：写入数据（模拟多句字符串，一句一句写）
    std::string messages[] = {
        "Hello Server!",
        "This is Client.",
        "No pipe, only shm!",
        "End of message."
    };
    int msg_count = sizeof(messages)/sizeof(messages[0]);

    for (int i = 0; i < msg_count; i++) {
        // 等待Server读取完上一条数据（标志位变为0）
        while (mem->ready != 0) {
            usleep(100000);
        }

        // 写入当前字符串到共享内存
        snprintf(mem->buf, sizeof(mem->buf), "%s", messages[i].c_str());
        mem->ready = 1;  // 标记为“数据就绪”，通知Server读取
        sleep(1);  // 模拟间隔发送，方便观察
    }

    // 发送退出信号
    while (mem->ready != 0) usleep(100000);
    mem->ready = 2;

    std::cout << "client end normal!\n";
    return 0;
}